Cluster based architectures such as that shown in FIG. 1 are commonly used for high performance I/O and storage systems. In such architectures, each “node” 102 in the cluster 100 provides an access point into the storage 104, and storage content is cached and distributed across nodes 102 according to some placement method. Co-pending U.S. application Ser. No. 11/365,474, commonly owned by the present assignee and incorporated by reference herein in its entirety, dramatically advanced the state of the art by providing a high-performance and highly-scalable caching solution with a cluster-based architecture. However, certain problems remain.
For example, in a client-server or initiator-target model (for example a NAS filer), it is considered desirable to allow a client 106 to connect to any node and be able to access any content from storage 104 regardless of its placement among the nodes in cluster 100.
A straightforward method for handling such I/O is for the cluster node 102 that has the TCP connection with the client 106 to forward the I/O request to the cluster node 102 where the data is placed, with the reply data sent back to the receiving node 102 and from there to the client 106. This approach is sometimes referred to as “remote operations.” While simple, this approach requires data copies to be moved between cluster nodes, limiting performance for large I/O operations.
An alternate method used in IP based clusters 100 is sometimes referred to as a TCP/IP “handoff operation,” in which the TCP/IP connection is migrated to the node 102 actually executing the I/O. This approach has the advantage that reply data is then sent directly to the client 106 via a single cluster node 102. However, moving a TCP/IP connection is an expensive operation, and can also limit performance, particularly for small I/O requests.
Accordingly, a need remains in the art for more efficient delivery of data in a cluster-based architecture.